package com.sgsg.factorymodule;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;


/****
 *抽象工厂模式
 *抽象工厂模式可以根据不同的需求便于更改替换不同的工厂类型；
 * 客户端通过接口操纵实例，厂口的具体类名也被具体工厂分离;
 * 比如：现在有User，Department两张表
 * 缺点：1.如果增加第三张表，需修改IFactory,AccessFactory和SqlFactory
 *      2.项目中频繁使用new SqlFactory().createUser()或new AccessFactory().createDepartment()
 *      如果数据库模型需要更改，（由Sql类型替换成Access）就需要对大量的代码进行更改
 * 解决方法：利用反射读取类的包名得到实体对象，名包是字符串，便于统一管理修改。
 *
 */

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        User user = new User();
        Department department = new Department();
        IUser iu = new SqlFactory().createUser();
        IDepartment iDepartment = new AccessFactory().createDepartment();
        iDepartment.insert(department);
        iDepartment.getDepartmentType(5);
        iu.insert(user);
        iu.getUser(1);
    }
}
